cmake_minimum_required(VERSION 3.5)

project(Upan2 VERSION 0.1 LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(Qt6 COMPONENTS Sql REQUIRED)
find_package(Qt6 COMPONENTS Core REQUIRED)
find_package(Qt6 REQUIRED COMPONENTS Network)

set(PROJECT_SOURCES
        main.cpp
        MountWidget.cpp
        MountWidget.h
        widget.ui
        LoginDialog.cpp
        LoginDialog.h
        dialog.ui
        DisplayMainwindow.cpp
        DisplayMainwindow.h
        mainwindow.ui
        AuditPlanFun.cpp
        AuditPlanFun.h
        curl.h
        UsbIO.cpp
        UsbIO.h
        ferryfs.h
        ferryfs.cpp
        ferrylog.h
        ferrylog.cpp
        database.h
        database.cpp
        SM4.h
        SM4.cpp
        utils.h
        utils.cpp
        UdiskInspection.cpp
        UdiskInspection.h
        UdiskInspection.ui
        softwareuninstallation.cpp
        softwareuninstallation.h
        softwareuninstallation.ui
)

if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
    qt_add_executable(Upan2
        MANUAL_FINALIZATION
        ${PROJECT_SOURCES}
        res.qrc
        version.rc
    )
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET Upan2 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()
    if(ANDROID)
        add_library(Upan2 SHARED
            ${PROJECT_SOURCES}
        )
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
    else()
        add_executable(Upan2
            ${PROJECT_SOURCES}
        )
    endif()
endif()


target_link_libraries(Upan2 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(Upan2 PRIVATE Qt6::Network)
#这两个文件的路径要手动配置
# target_link_libraries(Upan2 PRIVATE sqlite3.dll)
target_link_libraries(Upan2 PRIVATE Qt6::Core Qt6::Widgets Qt6::Sql)
target_link_libraries(Upan2 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/libcurl.dll)


set_target_properties(Upan2 PROPERTIES
    MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
    MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
    MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
    MACOSX_BUNDLE TRUE
    WIN32_EXECUTABLE TRUE
)

install(TARGETS Upan2
    BUNDLE DESTINATION .
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

if(QT_VERSION_MAJOR EQUAL 6)
    qt_finalize_executable(Upan2)
endif()
